//用于调试，记录后端返回的验证码
let secretCode = ''

Page({
  data: {
    code: '',
    mobile: '',
    countDownVisible: false, //倒计时显示
    redirectURL: '', //跳转前的页面路径
  },
  onLoad({ redirectURL }) {
    this.setData({
      redirectURL,
    })
  },
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  /** 校验手机号方法 */
  verifyMobile() {
    // 验证规则
    const reg = /^1((34[0-8])|(8\d{2})|(([35][0-35-9]|4[579]|66|7[35678]|9[1389])\d{1}))\d{7}$/
    // 正则校验
    const valid = reg.test(this.data.mobile)
    // 验证结果提示
    if (!valid) wx.utils.toast('手机号格式错误')
    //返回验证结果
    return valid
  },
  /** 校验验证码方法 */
  verifyCode() {
    // 6位数字
    const reg = /^\d{6}$/
    // 校验
    const valid = reg.test(this.data.code)
    if (!valid) wx.utils.toast('验证码格式错误')
    return valid
  },
  /** 获取验证码方法 */
  async getCode() {
    if (!this.verifyMobile()) return
    // 调用接口获取验证码
    const { code, data } = await wx.http.get('/code', {
      mobile: this.data.mobile,
    })
    // 检测接口返回的情况
    if (code !== 10000) return wx.utils.toast('请求验证码失败')

    secretCode = data.code
    // 开始倒计时
    this.setData({
      countDownVisible: true,
    })
  },
  copyCode() {
    wx.setClipboardData({
      data: secretCode,
    })
  },
  countFinish() {
    this.setData({
      countDownVisible: false,
    })
  },
  async submitForm() {
    // 验证手机号
    if (!this.verifyMobile()) return
    // 校验验证码
    if (!this.verifyCode()) return
    // 结构data
    const { mobile, code } = this.data

    const res = await wx.http.post('/login', { mobile, code })

    if (res.code !== 10000) return wx.utils.toast('验证码可能有误，或者网络出现错误，请稍后再试')

    // 调用封装好的存token方法
    getApp().setToken(res.data.token, res.data.refreshToken)

    // 登录成功后跳转到用户原本想去的页面

    // 判断是否为tabbar页面,如是则用switchTab
    const check = this.data.redirectURL === '/pages/my/index'
    if (check) {
      console.log('tabbar')
      return wx.switchTab({
        url: this.data.redirectURL,
      })
    }
    console.log('no tabbar')
    wx.redirectTo({
      url: this.data.redirectURL,
    })
  },
})
